package com.gitee.chessboard.model.word;

import com.gitee.chessboard.manager.DictionaryManager;

import java.util.Map;

/**
 * 词的顶层接口
 *
 * @author 敲代码的旺财
 * @date 2021/11/17 16:46
 */
public interface Word {

    /**
     * 设置字典管理器
     *
     * @param dictionaryManager 字典管理器
     */
    void setDictionaryManager(DictionaryManager dictionaryManager);

    /**
     * 获取词的名称
     *
     * @return 词的名称
     */
    String getWordName();

    /**
     * 获取词的编码
     *
     * @return 词的编码
     */
    String getWordCode();

    /**
     * 获取字典的编码
     *
     * @return 词的编码
     */
    String getDictionaryCode();

    /**
     * 获取词的属性
     *
     * @return 词的属性
     */
    Map<String, String> getWordAttr();

    /**
     * 设置词的名称
     *
     * @param wordName 词的名称
     */
    void setWordName(String wordName);

    /**
     * 设置词的编码
     *
     * @param wordCode 词的编码
     */
    void setWordCode(String wordCode);

    /**
     * 设置字典的编码
     *
     * @param dictionaryCode 字典的编码
     */
    void setDictionaryCode(String dictionaryCode);

    /**
     * 添加词的属性
     *
     * @param attrName  属性名称
     * @param attrValue 属性值
     */
    void add(String attrName, String attrValue);

    /**
     * 删除词的属性
     *
     * @param attrName 属性名称
     */
    void del(String attrName);

    /**
     * 保存当前词
     */
    void saveSelf();

    /**
     * 删除当前词
     */
    void delSelf();
}
